1. Field of the Invention
This invention relates to data synchronization, and more particularly, to defining views of source and destination data to be synchronized, assembling source and destination trees, including one or more nodes, representative of the source and destination data to be synchronized respectively, calculating and comparing a checksum value for each of the nodes in the source and destination trees, and synchronizing the destination data corresponding to the destination nodes in the destination tree having checksums that do not match the corresponding nodes in the source tree respectively.
2. Description of Related Art
A checksum is typically computed for the purpose of detecting errors or data corruption that may occur during the storage or transmission of digital data. Typically the checksum is calculated before the data is transmitted or stored. By re-computing the checksum at the receiving or storage device, the integrity of the data as transmitted or stored may be checked. If the checksums match, it is assumed that the data had not been altered in transmission or storage. On the other hand if the two checksums are different, then it is assumed that an error or some other corruption occurred during the transmission and/or storage process.
A number of checksum procedures or algorithms are known. Examples include parity checksums, modular checksums, and position-dependent checksums. With parity checksums, the data is broken down into words with a fixed number of “n” bits per word. For all the words, a logical operation is performed. The operation result is then appended to the transmitted or stored message as an extra word. To check the integrity of the message, the receiver computes the same logical operation on all the words of the original message. If the checksum result is the same, then it is assumed no error occurred. If the checksum result, however, is different, then the receiver assumes that an error occurred. Modular sum algorithms are a variant of parity checksums with the addition of adding all the “words” of the original message as unsigned binary numbers, discarding any overflow bits, and appending the two's complement of the total as the checksum. To validate a message, the receiver adds all the words of the original message in the same manner. If the result is not a word including all logical zeros, an error is assumed to have occurred. With position-dependent checksums, not only are transmission or storage errors detected, but the bit-position of the error is determined as well. The most common position-dependent checksums include cyclical redundancy checks (CRCs), Fletcher's checksum and Adler-32.